package com.xiao.xiaorpc.serializer;

import com.xiao.xiaorpc.spi.SpiLoader;

import java.util.HashMap;
import java.util.Map;

/**
 * 序列化器工厂（用于获取序列化器对象）
 *
 */
public class SerializerFactory {

//    static {
//        System.out.println("从配置文件中加载序列化器");
//        SpiLoader.load(Serializer.class);
//    }
    private static volatile Serializer serializer = null;
    /**
     * 默认序列化器
     */
    private static final Serializer DEFAULT_SERIALIZER = new JdkSerializer();

    /**
     * 获取实例
     *
     * @param key
     * @return
     */
    public static Serializer getInstance(String key) {
        if(serializer == null){
            synchronized (SerializerFactory.class){
                // 从配置文件中加载序列化器并初始化
                System.out.println("第一次访问，从配置文件中读取并加载序列化器");
                SpiLoader.load(Serializer.class);
                serializer = SpiLoader.getInstance(Serializer.class, key);
                if (serializer == null) {
                    serializer = DEFAULT_SERIALIZER;
                }
            }
        }
        return serializer;
    }

}
